{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 高维的数据可能非常稀疏，大多数实例可能相互间距离很远\n",
    "- 数据维度越高，越可能过拟合\n",
    "- 降维主要用于训练加速，也可用于数据可视化\n",
    "- 降维会损失部分信息，但也可能过滤掉噪音和不必要的细节，导致更高的性能\n",
    "- 两种主要的降维方法：投影和 `Manifold Learning`\n",
    "    - 最流行的降维技巧：`SVD,PCA,Kernel PCA,LLE`\n",
    "    \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 主成分分析`(PCA)`\n",
    "最小化原始数据和其投影间的均方距离"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Eigen values \n",
      "[2.91849782+0.j 0.91403047+0.j 0.14675688+0.j 0.02071484+0.j]\n",
      "Eigen vector \n",
      "[[ 0.52106591 -0.37741762 -0.71956635  0.26128628]\n",
      " [-0.26934744 -0.92329566  0.24438178 -0.12350962]\n",
      " [ 0.5804131  -0.02449161  0.14212637 -0.80144925]\n",
      " [ 0.56485654 -0.06694199  0.63427274  0.52359713]]\n",
      "[[ 0.52106591 -0.37741762]\n",
      " [-0.26934744 -0.92329566]\n",
      " [ 0.5804131  -0.02449161]\n",
      " [ 0.56485654 -0.06694199]]\n"
     ]
    }
   ],
   "source": [
    "#Principal Component Analysis,PCA\n",
    "import numpy as np\n",
    "from sklearn.preprocessing import scale\n",
    "from sklearn.datasets import load_iris\n",
    "import scipy\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "data = load_iris()\n",
    "x = data['data']\n",
    "y = data['target']\n",
    "\n",
    "#1.数据标准化\n",
    "x_s = scale(x, with_mean=True, with_std=True, axis=0)\n",
    "\n",
    "#2.相关矩阵\n",
    "x_c = np.corrcoef(x_s.T)\n",
    "\n",
    "#3.特征值及特征向量\n",
    "eig_value, eig_vec = scipy.linalg.eig(x_c)\n",
    "print('Eigen values \\n%s' % (eig_value))\n",
    "print('Eigen vector \\n%s' % (eig_vec))\n",
    "\n",
    "#4.选择大的特征值对应的特征向量，并将数据投影\n",
    "w = eig_vec[:, 0:2]\n",
    "x_rd = x_s.dot(w)\n",
    "print(w)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(1)\n",
    "plt.scatter(x_rd[:, 0], x_rd[:, 1], c=y)\n",
    "plt.xlabel('Component 1')\n",
    "plt.ylabel('Component 2')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-2.68412563  0.31939725]\n",
      " [-2.71414169 -0.17700123]\n",
      " [-2.88899057 -0.14494943]\n",
      " [-2.74534286 -0.31829898]\n",
      " [-2.72871654  0.32675451]]\n",
      "[[ 0.36138659  0.65658877]\n",
      " [-0.08452251  0.73016143]\n",
      " [ 0.85667061 -0.17337266]\n",
      " [ 0.3582892  -0.07548102]]\n",
      "[0.92461872 0.05306648]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.decomposition import PCA\n",
    "pca = PCA(n_components=2)\n",
    "x2d = pca.fit_transform(x)\n",
    "print(x2d[:5])\n",
    "\n",
    "print(pca.components_.T) # 各个主成分\n",
    "\n",
    "print(pca.explained_variance_ratio_) # 各个主成分轴导致的方差占比\n",
    "# 92.5% 的方差是沿着第一轴，5.3% 的方差是沿着第二轴"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PCA(copy=True, iterated_power='auto', n_components=2, random_state=None,\n",
       "    svd_solver='auto', tol=0.0, whiten=False)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 选择合理的维度，使得降维后方差占原始数据总方差的 95% 以上\n",
    "pca = PCA()\n",
    "pca.fit(x)\n",
    "cumsum = np.cumsum(pca.explained_variance_ratio_)\n",
    "d = np.argmax(cumsum >= 0.95) + 1\n",
    "\n",
    "pca = PCA(n_components=d)\n",
    "x_reduced = pca.fit_transform(x)\n",
    "pca"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEVCAYAAAD6u3K7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3df5Rc5Xkf8O+zs1diVriMqGVsTSx+JEQqVJa2bIywnHMk1aDE2HSLMQrBPifHjfFxWrcQohw5KEZQbJSoDrhJeo5Jndg1mCMZ6FpUbqS6gphShL3qrpDVoLqxQXgEp/KRVgTtIM3uPv1j5q7u3n3fe9/5defeme/nHA6rnbszd2bufZ/3x/O+r6gqiIiIwvo6fQJERJRODBBERGTEAEFEREYMEEREZMQAQURERgwQRERkxABBmSYinxaR4yLyhoj8S8e/2SQiX6njNeo6PuJ51onIs47HrhaR/1V7b18VEd6rlDjhPAjKKhFZDuAFAGsATAEYBbBWVf+2oydmISLrAGxT1XUOxx4C8DsAfgjgWQD/TlWfauf5EYX1d/oEiJrwEQB7VfX/AICI/DWAGwGkMkC4EhEBcBWAV1T1nIj8PoBKh0+LehCbrZRlVwB4NfDvYwAuAwAR+bqIfFZE/lJEfhz8IxH5LRH5euh360TkJyLysoh8oxZsjMeLyGUi8oqI/G6ta+slEXl37bFhEfm/ta6hP23kTWm1Wf/XAHaLyAZV/R+q+mLtdY+LyH+uve5s15OIrBWRIyLyuoh8W0T6a7//J7Wuqv8nIo+JyILa768UkedE5ISIPCkiA42cK3U3BgjKsgsAnA38+xyAfODfnwfwPIBrHZ7rjwB8FsC/AfCLqvprMccvBfDu2v+PAbit9vvPAPg4gGUA1onIVQ6vbXIrgP8G4GkR2SUi/vt6D4Cv155/Ze04APgUgM2q+h4AFwK4QUQ8AE8A+H0AvwDgIgC/VTv+UQBfqj3fm7XzJpqDAYKybBLVIOFbWPud77uq+jVVPenwXG8DWFD7z+W+UFTHE2YAHES18AWqBfWvAngcwJUA3uXwXPOfXLWsqltqz/FLAP6g9tBJVf2Oqp4D8BSq4y8AcDeAXxCRbwJYW3vdFQDOqur3VPWcqn5EVR8RkXcA+BUAfwXgZwA+WjuWaA4GCMqyn6DWpVRzKYCfBv59oI7nOgLgQQA7AGx2OP4NVfWDkQKAiBRQHSjvA/DFOl9/logMish3AEBVj9fOa7D2cPCe7QMwU+tmOgCgCODPAYxYnvdqEdkAQAC8rarvVlW/FeTynqnHMEBQlv0XVLtSlovIFQBuALCn3icRkRyAmwC8X1VXqOrzDn9mSv/7JVSzqf4Dql1d19R7LjWvAPjVWqqroPq+DtYeK4jIPxeRhQBuBvA/AVwM4HIAXwYwAWBD7dijAC4QkQ21IHIPgFWq+iaAH4nI7bXjHgRwX4PnSl2MAYIyS1V/jGrN91lU013vUdWjDTzPNIBxAMdE5JiI7BeRlQ2c0qHaf68D+AKAwwB+uYHzOQXgt1EdPziO6pjCjtrDx1Ed73gVwBiAJ1X15wC+gWpg+avae/nlWjfUx1ENHD9DdYzmz2vP80kAnxWR11HtXrq/3vOk7sd5ENTzRGQVgD8G8Guodr/8HoD3qOpdHT2xEBG5DMCzqnpZZ8+EegXnQRBVa97nUK2dT9f+/dsdPB+iVGALgoiIjDgGQURERgwQRERkxABBRERGXTNI/c53vlMvu+yyTp8GEVGmHDx48OequsT0WNcEiMsuuwyjo6OdPg0iokwRkVdtj7GLiYiIjBggiIjIiAGCiIiMGCCIiMiIAYKIiIwYIIiIyKhr0lyJusHIWAk79h7F8Ykylhby2LxxOYYHi50+LepRbEEQpcTIWAmff+owShNlKIDSRBl37hzH4P37MDJW6vTpUQ9iC4KoTvXW8l2P37H3KMqV6Xm/PzVZweefOgwAbE1QohggiOrg1/L9grw0UY4svOs5/vhE2fq65co0duw9WneAYJcVNaNjAUJELgHwhKr+quVxD8BTqO63+zVV/cskz4+6U7MFpqmWX65MY9vuI9ix9yhKE2XkRDCtimIhjzNnp4zHmwr7pYU8ShFBIuoxk3qDGVFYR8YgRGQxqnvoLoo47HMADqrqWgC3iMg7Ejk5yqSRsRLWbt+Py7fswdrt+4199qY+/s8/dbiu/n1bLX+iXJktwKdrm3CVJsqYKFecn2fzxuXIeznra0vtPbiyBbMde+vetpt6VKcGqacBbALwZsQx6wDsqv38fQBDbT4nyijXgr/RAjMYfPpEWnLOSwv5eb8bHiziwZtXopD3jH+jQF2Fuy2YRXVlEQV1pItJVd8EAIm+2RYB8O/wkwAuCR8gIncAuAMAli1b1tqTpI5opAsoquAP/q2ti+b4RNn6uuFumukWbNGb93LYvHG58bHhwSKGB4u4bMse67m6Kgx4ODU5vwWjANZu3z/ns3X93Dmm0VvSPEj9FoA8gNMALqz9ew5VfQTAIwAwNDTEzbUzbGSshG27j8zpkgn3mdsKJ5ea8taRw9bXLgx41r56W2ZRTgQzqlhayGPy3JSxIPYtHvAwsKC/rkK1aBmPuCjvYe32/U4F+VtvT1mfP/geATiNVXBMo/ekOUAcBPBBAE8AWAXgQGdPh9olXPAEBbuAbIWTbXA3WFN+/MXXrK+vCmsLxBZ8ZlTx0+03xp5/3svh3o9eXXcBunnj8nnP6fUJzpybmg2iUQX0jr1HUZmJrjMFP1uXFphrS426RyomyonIBhH5V6FffwPAfSLyFQBXAXgx+TOjJNhq6b7jE+XIwilqcNcvRKO6hk5HDCSbxgqAuWMI/thBsfa7XK3rtFjI48GbVzZUeAafU2rPdeEF/ahMz30ftjEU166o4xPl2BaYPwYT1UVH3amjLQhVXVf7/34A+0OPvSoi16PaiviCqtpLEEq1uH7ruAJmaSEfWYj5z+WnmYZFBZ+cCN590QXGv/PPNVyTN40h+GMHrRR+zsvrGJeIS5kNHgeYx2cKA15k6yj8HNR9UtGCsFHV46q6S1VPd/pcqDEuGUYXWbJ2gPOFcVxNfniwiOe3bEC9OUa3XfteYwvEf11TTb7RVkGzXFozvriUWeD8e9y8cTm83PxP7q23p3Df00cig0PUgDtlX5rHIChjgi2FwoAHVRjnAYT7rW3JbH2COYWxS03eVnMuFvJYv2IJHn/xNUyrIieC2659Lx4YXjl7jK2V047WQSNcWzMA5rSq/Pe0fsUSPPPyCeN7DCcIAEBlRiMH34uhbC9mN3UfBghqiXBXRFTBAsztFpmwHKuKOYU0YC/EfVGF6PBgcU5ACEpLEIji+hkEj3d9T7ZxGJtiIY/nt2wAEJ/dxOCRXQwQ1BJxA81hwW4RW60/3HXiUuDVW4hmTbsCme07KOQ9nJ2aiWy12BII7nv6SGzqMqUbAwQ5aXagOShcwNTTdeIiC62BtLF9B9tuuhpAdMC1ffe2VmQ9qbFsfXQWAwTFcpkg5Zo1UzTc5N1e68+CuO8g6rtw/e6DXCoUnJjXeaItWDogDYaGhnR0dLTTp9GVbDnwiwc8jH3hBgDRk8WAam20U9k/1F4uqbBhwTEMG9t15/K35E5EDqqqca07tiDIym/e22qHpyYrGBkrzenSCWcxnS5X2CLocqbWx5mzU9aVbG3dh+HuJE7M6zy2IHqc6yJ1NqzNkYnt+lk84BmXHtk6chiPHTiGYGkkAEylU04EX751FSscLcIWBBlF9fG6ZiWxNkcm9YwrjYyV5gUHoBocTEFiWpVjEQlhgOhhUesbuRb8XGaBbFyzyXbsPWpsKQDV4ODv0BcUXIOKyQ3tk+qlNqi9otY3cin4ucwCtUJUZaRYyGPG0g3ut3iDy7jcuXMcg/fvq2vnPbJjgOgh4W05CwPmNZD8mlh4LR8vJyjkvY6vSUTdxVYZESByHa6ciLEb9NRkpe6tZMmMXUxdKpiB5DfRg/25pYkyvD6Bl5M5S0gHl6UA2Hyn9jNN0hMAt69ZFrkOV9QYGfepaA0GiC5k2yYz3FCvzCgKeQ+LFpp3O+OMZEqC6yS98ONRKdgAEyhagWmuXShqc5cwAWZ3RiPKkrhU7OC2sGz92jHNtQtFrVFTT82JWUiUVVFLlQPnW85RS3RwradoHKTOoLhNeFwLfWYhUdYNDxax7aarUQhsOtVn2F/EtDWry2ZWvY4BIoOi5i8A0buJ+fcOs5CoG/iFfLAFMWPpNQ+3rOPuI2IXU2YEm8K2USP/Bgjv0exnMZlWUiXKsnr2IQm3rKPWemLXUxUDRAa4rosU3NuZGUjUC1zH28LdqSNjJetaT4UBj8uM17CLKQNca0lnzk2x/5R6im28rZD3UCzkrZM6bct7CKpb3bLrqYotiAxwrSVVppWTg6inRO2EF3Uf2O4pBazLlPfivAq2IDKgnlTUXryIqXcNDxbx4M0rI1sLJlEtD0MSVOTfdDO2IDJg88bluGvnuHVwOqgXL2LqbY2Mt9laHiLmcQl/XahewxZEBgwPFnH7mmXWmo2P8xqI3JhaHh+7pohTk+buJUXvDVADbEGkjmmRPT89dejSi+ek3q1fsQTPvHyi51PxiBoRbHn4mYI2xR5tmTNApIhtkT0/ze7Bm1dye0+iNojKFOzlljkDRIpEXaRcvpiofaKSO4KD3r02gY5jECkSl4HEDCWi9rAldxQL+XndUL20dhNbECmytJCPXKabGUpE7WHLagp2LcWt3dSNLQsGiBQIDkzbpv/3cj8oUbu57KBoa8H7LYluXJqDAaLDwgPTCswGCS6yR5ScuPkUtha+aW/sbhkzZIDogOBAV18tCAQpqn2fzFgiSg9bN5QtsaQbxgw5SJ2w8EBXODj4uuHiIuomtmU9bHMkumHMkAEiYa4rs3bDxUXUbYYHi3h+ywY8tGk1AOCuneOYPDcFL7SNndcnmDw3hcu37MHa7fszm+nEAJEwl5YBB6SJ0ivcC3BqsgLI+YX+CnkPkOrvs54OywCRMFvLICdS12qURNQZpl6AyrRi0cJ+/HT7jVi0sB+V6bldx1ndT4KD1AmzDXQxKBBlg60XwP993OO+LMzKZoBoIdcv/AKvbzZAFPJe7OYmRJQetnRXv3cg7nFgfnp7WudOdKSLSUS+JiIviMhWy+P9InJMRJ6t/bcy6XOsl8s0fP+Y4JLCZ6dmOnC2RNSozRuXI+/l5vwuOG4Y9zgQPys7LRIPECJyM4Ccql4H4AoRudJw2PsAPK6q62r/2dfhTQnbF373rkOzQSIrFwUR2cXtYueyy51rN1SndaKLaR2AXbWf9wH4IIAfh45ZA+AjIrIewGEAn1HVqfATicgdAO4AgGXLlrXrfJ3Yvthp1dmmY1YuCiKKFjfrOrx0h18J9H/v0g2VBp3oYloEwO93OQngEsMxPwTwIVV9PwAPwIdNT6Sqj6jqkKoOLVmypC0n6yrqi/VbCbZj0nZREFFz4rqcXbqh0qATAeItAH6JeKHlHF5S1ddrP48CMHVDpYrpCw8qTZRx5uwUvNzcCTVpvCiIqDlx3cku3VBp0IkupoOodisdALAKgKkD/psi8kUAPwIwDOBLyZ1eY/wv9u5dh6zLZ0yUK/D6BIsHPExMVlKb2kZEzXHpTo7rpkqDTgSIEQDPichSAL8O4DdE5AFVDWY03Q/gW6gubLpbVb/XgfOsm/9lh+c5BFVmFAML+jH2hRuSPDUiSlBWxhjiJB4gVPVNEVkH4HoAf6yqbwA4FDrmR6hmMmVOcHDKtvkPB6WJulvUBkRZmCDnE7V0h2TN0NCQjo6Odvo05li7fb8xSHApb6LuZwoEwPweBn//l07t+yIiB1V1yPQYZ1K3SPBiuCjvQWqLdYV3iOOgNFFvMI0xDN6/b173s18+pHE2NRfra4FwSttEuTI7W9rfIQ5Ib6YCEbXfyFhpzioKJmmbOMsWRJ1Mzca4PR64QxwRuRb8aRqjZICog22BLZcNgNL0pRNR8lzLgDRlOrGLqQ62yS85EctfnJemL52IkudSBqRtjJIBog5R6y1FSduXTkTJM6224PUJBrzzxfAFXrqK5HSdTcq5tgIGvD4sHvBSPYWeiJJlWl7j/ZcvRrlyfsn/U5OVVG1PynkQdQiPQdhwQJqI4oyMlXDXznGYSuAky5CoeRBsQdTBrwHEjTlwQJqI4uzYe9QYHID0lCEMEHUaHixiJqbVxQFpIooTFQTSUoYwzbUBtoW4AA5IE5EbWzkiANavWIK12/d3fL0mtiAaYNv7YfGAxwFpInJiK0cW9Pdh5w9ei9zfPilsQTgKz6D+2DVFPPPyiY5HeCLKJr+82Lb7CCbK55fgODs1M+9YfwmOxBfyYxZTPFP2Ut7LsbVARE2zrfps0o4VX7maa4P8VoPpy+tURKf0ytI6/5Qe9WQsJb3iK8cgLIIrtNqkJRWNOi9uk3oim3ozlpJc8ZUBwiJuhVYgPalo1Hlxm9SbjIyVsHb7fly+ZQ/Wbt/PYNKjbIPVUZKqnLKLySLuC2A6KwXZWpqlibLTzmJp3CyGkjE8WMToqyfx+Iuvxa7r5kuqcsoAYRE116FTWwNSOph2D4xy587x2Z9LE2X87s5xQICZUFlQrkzj7l3V7dl5bfWOkbESnjxYcg4OSVZOmcVkMTJWwuYnDqEyPffz8foEOz6+ijdwF4oaZI5KWGgXVkR6g2sWkwBtSX6IymJigIiw+r59c/KTg3jzdhdTKrMAuH3NMgxderGxspAEplN3v8u37LGuyeRr5+J9THNt0GlLcADYZ9xtTIPMCuDRA8fw2IFjsTdwu5Qr07hz5zhGXz2JoUsvZhptF4rqzgY6O97JLKYIcQNBadtgnOLZMoeikhLS0MZ+9MAx3LlznGm0XciUxeQPa3V6Pxm2ICKsX7EktvbIuRDZYdpT/K6d47hz5zhyIs6DhGlRrkxj2+4jbEVknP/9pbF1yABh4WcWxBUZnAuRHbZuJCB+29h6CZJpeUyUK9g6chjPvHwCpYnybKDjGFm2DA8WU/ldsYvJwmWiHOdCZEtSrb1iIY+HNq2es7VkIe+17fUePXBstg/bD3Tsgsq+NEykZAvCIq4wYQ0te+IGA1vBrzSEa4Su29W2EtcLyy5Td6ifFAMk1x3FAGERN1GOe05ny8hYCZPnptr6GlGVBls/s21P4lbhGFk22ZZuuXPn+Jzuy3ZnUzJAWKxfsQSPHjhmfIw3Xba0ovYeNabgOlfB1M/c7sl3fSIYGSuxFZEx9WTVtbOlyDEIA3+A2oYD09niMp5ksyAneGX7jXPGFAp5D4sHvNnxhWbSEE0pjnkv17Ixi2lV3LlzHKvv28fxiAypt4xpV6WVLQiDqAKFA9PZ08zNc642e7pdWSa2ricALR2zmChXOLEzQzZvXF7X99+uSisDhEFUk5/LHmRPEoPTzYgKPsGF/prFQevsCFYc4q7ddlZa2cUUMjJWgm1xzmIhz5srg5q5edqZnhpneLCIYotrhhw/y6ZwmZTUTGsGiJAde48aByMFzRU01DnDg8WGCnqvT7DtpqvbcEbubGMUV75rUUPPx/GzbAjvaKmYGxQe2rQar2y/Ec9v2dDWSisDRIithqVg320WjYyVIlflDfrEmmVzJrelYVn34cEiHrx55Zzz+tg1Rfzs1Nt1P5fXJ6zkZIRt1r9f0blr53gik+c4BhFi668WgOmCGdHo3g1Dl16MB4ZXtumsGhceo1i7fX9Dg9cXXtDP6zcjbBXViXJltrKTxIrSzi0IEbleRP5CRFbX/n1HW86ow2w1LAW4cmsGhJvm9cjK0hSNjiOcmoxvRVE6uHYFtntF6Xq6mH4HwGYAnxCRDQBWt+eU0osDfOnXzJyHrCzf3sw4wur79nV0bR9yYxp7smlnuVRPgDihqhOq+nsAbgDwK42+qIh8TUReEJGtzRzTDlEFBAf40q/ZmyULlYB6Co+wiXKF+0lkQHjsKRex8Xk7y6V6AsQe/wdV3QLgPzXygiJyM4Ccql4H4AoRubKRY9olqoAoTZRZ80q5Zm+WLFQCTAPXD29ajYc31deoz0qLqVcNDxbx/JYN+On2GzETsRz9+hVL2nYOsQFCRB4WEVHV7wR/r6p/2uBrrgOwq/bzPgAfbPAYiMgdIjIqIqMnTpxo8HTmiisgWPNKt2Zq11maJR8sPPxUx+HBIvJefYmJWWgxUXS59OTBUtvKI5er6S0Au0VkAABE5AYReb6J11wEwH83JwFc0uAxUNVHVHVIVYeWLGlNFHUpYFjzSi+/dt2IrM+S3zpyGOXKTF1/k4UWE0WXS+0sj2LTXFV1q4j8JoC/EZGzAM4A2NLEa74FwL8qL4Q5SLkc0xbhtXFsDTvWvNJreLDYUJprFoNDoym9QLZaTL3OvzZtS6+0qzxy6WL6pwA+jWpgWALgX6vqc0285kGc7zJaBeCVBo9pm2Dz3bbUAWte6dZIV9M/+sP/mqkMn2ZSegt5L/Mtpl4TtfTKRW1aEsalZn4PgD9U1XUAbgGws5bm2qgRAJ8UkT8BcCuAIyLyQMwxe5AA0xZ/tqUOWPNKN7+rKSr7I6xcmclUhk+jKb2FvIfxe29gcMigzRuXw+ubf02fOTfVlutVtM7N2kXkPQCeVNUPNPyiIosBXA/g+6r6RqPHBA0NDeno6Gijp2TcVMbfJGbxgAdV4HS50vYt/qi1RsZK2PzEIVSm69+3La07BzbTreT1SSqWEKHGDd6/zzjpsdHrVUQOquqQ6bG6l9pQ1ddr3U4NU9VTOJ+l1PAxrWRb+wSozkDNezk8tGk1b6yMGR4sYtvuI05rMYWlcZxpZKyEzd8+hMpMYxuVMjhk28hYyTojvh3Xa0ODv6qavjunSXEfLjOXsut0A8EBSOc407bdRxoODlyuPtv8Xg6bdlyvXKyvxmVTmTTWKCleIxsGpXWcqZGWkC+N74fiuXQptut65XLfqH4Bk+emYo9LY42S4tkG9qL4cynCSQtZxtZD9rhmqrUrI63nWxCmwWmTtNYoKZ5/49y1axz15GQEr4skllZ2sXjAa2hV1nqyuSg9XDLV2tl12PMtCNsXUMh7c9a6Yc54tg0PFmGd9WjwB0+9NO+6KFem8fmnXmrxmcULpl8D87efdHHbte9t7UlRIuK6tdtdce35FoTtCzhdrmD83hsSPhtqp3rGIiYtS1aUKzO4/S9ewGOfvm7eY35f8fGJcsPp0OHnWL9iCb714jH449L1th5yIrjt2vemciMkindR3rOOOxUTSLnv+QBhKzQ43tB9Nm9c7tSdGOf5vzuJrSOH5xS64a5KW5dUVBAxPcejB441dI5pncNB7kbGSjhjGBtNci5LzwcIU6HB8YbuFF5na2BBDmfONRYsHj1wDEOXXjznOU1dUtt2H8F9Tx8x1vyDQQQA7t51CNN1Tly14fWbfTv2HjVO8Exy69i6Z1KnVTMzqYO1uovyHkSAiUnOmu52a7fvb2g2sm9hfx/eeeHCyEUdXRTyHs5OzTTdsvEtHvAw9gV2j2bd5Vv2GK8rAfDT7Te27HWiZlL3/CA1cH5xvoc2rcbZqRmcmuSuW72g2XktZ6dmUGoyOADVuQ2tCg4AcO9Hr27Zc1Hy/KQE23WVZPd3z3cxAdETUfwZ1GxFdJ9GJtBlAa/V7IpLu0+6+7vnWxAuE1FKE+WumSxF5zWz+1xa2ZaDpmyIm/ewsD/ZIrvnA4Trksnscuo+4b2dC3kPiwe82bkv9W7fmaS1v3gxl6HvQnHdnhPlSqJlUM93MdXbD+1nprAZ3x38vZxNml05tV2KhTwe+/R1LZl3Qeni0u2ZZLd3zweIRvqhJ8oVjIyVeDN2uXBa7EV5D6fLlaYHpZsRbCVEBTfKps0blztVSpJaODS9beiE2HaMe3jT6sj+XC793RuC28+O33sDHtq0Gl4umXWN8l4On1izjEu+9JDhwSIuvCC+3p5UJlPPtyDCtcRwUz3pTcIp3UytikaW4M57OXzsmiJ2/vA142SoJJZRoHSaiFlOJcmxpp4PEIC9qT48WLTOgu0TYTdTjwpfLy4T7rycYNGC/nnb1g5dejHHEWjWyFgJfSLWGfVJVxw4kzpGVF5y3suxyU/Ga8TrE1x4QT9n5JOzTpU1UTOpGSAcjIyVrOvkLB7wMLCgnzXAHseMIqpX+Jo5c3bK2F2ZE8GXb23f4nwMEC1gWxcljK0KIorjulEZ0Pq1l+Y9P9diap5r1oCfo0xEZOM6QRfo7NYDDBCO6lmWgRlORBTFtYzo9Ox4BghH4WUZioU8CnnPeCw3GyKiKBdZyo6gNMx7YZprHcLpjaZ+xE5HfCJKN9tOcUFp2RGQAaIJcZPsiIjCbDvF+dJUyWSAaBLXwyGiekSNP6RtBj0DhKNwzvL6FUvwzMsn2HIgorrYFghNS7dSEAOEg/BYQ2mijEcPHJt9PLj5PIMEEYUFK5iFAQ9en8xZsTVN3UpBzGJy4JKzXK5M476njyR0RkSUFcFdKxWoru0m1Q2q0r5KL1sQDlxzlk9Ncp8IIprLVMGsTCsWLezH+L03dOis3LAF4aCeeQ3+LOqRsRLWbt/PvayJepytgpmFCbUMEA7qnUUdblJyL2ui3lUYME+Ks/0+TRggHJhmUds2tF9ayBublFyjiag32dZDzcI6qRyDcFTPLOq7uAsdEdXYdhw83cBOhEljC6JBplaFn4lgW2eFazQR9ZaRsRJsO5hnoTxgC6IJplnUI2MlvPm2uWawfsUSbixD1EN27D1q3Udm8txU6rMeGSBabMfeo5ixXBF7XnodTx4szZlwxwl2RN0rqlv51GQl9fd/4l1MIvI1EXlBRLZGHNMvIsdE5NnafyuTPMdmxF0QHLwm6h1x3Uhpv/8TDRAicjOAnKpeB+AKEbnScuj7ADyuqutq/x1O7iyb00i/IgevibqLPw+qNFG2jkH40nz/J92CWAdgV+3nfQA+aDluDYCPiMgPai2OzHSFbd64HF7f/EvCywkGLKmxWciHJiI3wXlQAKBAZJBI82B1WwOEiHw10E30LIDPAfBni50EcInlT38I4EOq+n4AHoAPW57/DhEZFZHREydOtPjsGzM8WMSOjwdP3ugAAA16SURBVK+as9vc4gEPO25ZhQX95sl2WciHJiI3pnlQiuraS+EJt2ldpM/X1pq5qn4m+G8R+QoAP1xeCHuAeklVz9Z+HgVg7IpS1UcAPAIAQ0NDqSlmbXtE2OZHZCEfmojcmJbyBqrzIR7etDpTWYxJd90cRLVb6QCAVQBsozPfFJEvAvgRgGEAX0rm9NrLtg780kKe6a9EGeffwzY5kcxtMJb0GMQIgE+KyJ8AuBXAHhG5SkQeCB13P4BvAhgH8IKqfi/h82wL25pOE5PnsPnbh7h2E1FGhccdTKYz2JecaIBQ1TdRHag+AGC9qp5W1f+tqltDx/1IVd+nqitV9Z4kz7Gd/NnXhdBM6zPnpudsHgKkP/2NiM5z2TOmmOLBaJvE50Go6ilV3aWqbyT92mkwPFjEooVuPXtpTn8jovPi7tW0D0bbZCZ9tJu4FvxpTn8j6kW2sULb+CJQbTlkdUyRAaIDoi4mX1ZrHETdyrQ3vb9UxuaNy42rO6d1K1FXXM21A0yD1V5O5u1RC4C70hGlRNQ+L1GrO2cZWxAd4F80UWmtptrK5icOYdvuIzhdrjAVlqjNto4cxuMvvoZpVeRErFlI3TxWyADRIXH50LaNzv3NR7gSLFH7bB05jEcPHJv9d1SKqj+Pydb9lOX7k11MKeVSK2EqLFF7PP7ia07H+WOF3brNMANESrlmMHVz85aoU6JaDKZxBtt9mPX7k11MKWXKijBhKixR69nGHHIieH7Lhnm/j1pGJ8vYgkip4cEiPnZNMXKZYKbCErXHbde+t67fmzITu+H+ZAsixZ55+YR1P9ssT74hSrsHhqtp5sEsptuufe/s78NcMhOzSDSDC0iZDA0N6ejoaKdPo6Uu37LHGiAe3rQ68xcfUVK4WrKdiBxU1SHTY2xBpFjUjOu7dx3CXTvHebETxYhLQWXwsOMYRIpF9V9Oq3JpcCIHUSmowWW6eT/Nxy6mlFt9377ZyXFRCnkPixb2sxZEFGLrqhXYW+k5EXz51lU9cQ9FdTGxBZFy22662rjJUNhEucJaEJGBLdV0aSFvnacwrcp7CAwQqRdeBCwnUYmv55lmcY6Mlbj4H/UM/3ovTZTnpYv7KahR8xS6YSZ0szhInQHBdZvCA25RgrWjbl0rhsgkfL0rql1Kivkp4lH3U9ZnQjeLASJjTPnWk+emcGpy/jhFsHYUt1QxUTcxXe9+cAjOhPav/bt3HTLOnM76TOhmMUBkUHglWFOrIjyLM2qtGKb5UTcIXse21BvTfWBrSXTDTOhmMUB0gahZnP5NY7thCgMeu54o81y7Xm0tgm6dCd0sprl2sbibJu/lsLC/z5hG20tpfpRdfgUobgtfoDu2AG0HzqTuUaZ+WJ8/UHfXznHj436aH8CWBKVHsBupMODhrbenUJmJruT68x3YIqgfA0QXs407CDA7ULdt9xHrRLxgmh+b3tQJUQHBlJgRlhPB3z344XafZtdigOhicWvUj4yVcObcVORz+GMSHKOgpIW7SF0CQljUxj8UjxPluljcGvU79h5FZTr6BsqJdOVWipR+UV2kroo9nqbaLLYgulhcZkbcJKC8l7PeoKWJMtZu3z8vW4rdUBQlfJ2sX7EEz7x8oqHrMw7TVJvHLKYe5i9DYOIPYsdliOS9HD52TRFPHizNyyE3ZYwwkPQul1TU4HUTdX36vJxg0YJ+nC5XcFHegwgwMVnhtVUHZjGRkWnfa1PBHnVTlyvTs7tuhX8fnqXN5T56m0uXUfC6MV2fwYDAINB+DBA9zGVyUPAYW23ONhAY7iLgch+9zbXLyD+Ok9c6jwGix4WX7Yg6xtbkz4kYg4QCc8Ypopb7oO4XtUNi+Dify/VJ7cMAQc5sXVKmMQhfsBspLu2W0i1u/Cg4q9mvNARXTvUnZkaNenJgOV0YIMhZVJN/6NKLrd1Q5co07tw5jsUDHrw+mTPz1S8QOHidbi77Ogcf91uU4eNGXz2Jxw4cmxMkbMtwU+cxi4layra9o880yAiYV9LkujnpEdW9+OVbV8VmuwWX2WZlIF2YxUSJietnrkwrFi3sx/i9N8z+bu32/XUNXrOASV7c1pxx2UnBv+e4QnZwJjW1lGn2dli4sLEVPv5kvODWqFtHDuOunePcf7sBzWw5G7c1Z9xWuBxnyia2IKilXNJiw4VFVKsj2IcNYF7/NZBcqmyjLZc0tHianYNiSlAImla1zrznwHN2cQyC2sa20114bMFlhq2/pk5U95XLss5RhXXcY7b3Athz9V0/g1YLr4I6MVkxjg2Ft+CMe867do3DVGSEZ96bspgonTgGQR3hOtHJpdXhMlci2OUUfF5fVC0agPGx0VdP4pmXT1izs+57+gjersxYa+bNTg40BS0gOiCFl3CPWgW13jko/X0yb4FHr09mz4GBoLuwBUGpYsuWcWlBhI/3a7R+QXrm7JRx74uo5/ZTMOvl18xtWV0C4KfbbzT+bXA+Qfj1vZwAijmpwgLg9jXLMHTpxU4DxqbzdGH7bhYPeBj7wg2Gv6AsiGpBJD5ILSKXiMhzMcd4IvK0iDwvIp9K6tyo86KWKHcZAPf5NfngYLZtY6TjE2VrTbrR6pP/fLbBWX+WeXig2G/l+AVx+PUr0zpvBzVFdWzmvqeP1BUc6h0bsH1GEw3s00DZkGiAEJHFAL4BYFHMoZ8DcFBV1wK4RUTe0faTo1QYHiziwZtXoljIQ1Ct4fr99abHFg94xucx7WNhs7SQbyjLJu/lUMibX99/vqigZsrAanQPBEV9G+rkROoeB7F9RsxQ6l5Jj0FMA9gE4Dsxx60DsKX28/cBDAF4JnyQiNwB4A4AWLZsWctOkjorqi87/JhtENi1kA3WouvpnikWoif5+Y/Fja+ExyOSWJeq0UFy21IrzFDqXm0NECLyVQDBq2e/qt4vMTnTqLYw/GrVSQCXmA5S1UcAPAJUxyCaO1vKIttAuK1AXjzgYWBBv3XQ3H+ePssChALgoU2r5xWucSviDg8WreMRwaAQN9HQy80fJPYV8h7OTs3MC3KLFuTg5fqaXiKbq6v2nrYGCFX9TIN/+haAPIDTAC6s/ZvIyNbiMNV27/3o1U6tk8u37DEeo5ifHeWaveOyWKGplh5eq8i0nlHey2HbTVcDaG8Bzkyl3pLWNNeDAD4I4AkAqwAc6OzpUNY0W9u1FebN7HHs0kXjukeHvzii6RgW4NQqHUlzFZFnVXVd7ecNAK5S1T8LPH4pgO8C+B6ADwBYo6qRncNMc6VWatcEtzTMqiYKikpzTe08CBFZimorYq+qno47ngGCWo2FOfWCTAaIejFAEBHVL1UT5YiIKBsYIIiIyIgBgoiIjBggiIjIiAGCiIiMGCCIiMioa9JcReQEgFdb/LTvBPDzFj9nt+Fn5Iafkxt+TvFa/RldqqpLTA90TYBoBxEZteUHUxU/Izf8nNzwc4qX5GfELiYiIjJigCAiIiMGiGiPdPoEMoCfkRt+Tm74OcVL7DPiGAQRERmxBUFEREYMEEREZMQAUSMil4jIczHHeCLytIg8LyKfSurc0kREviYiL4jI1ohj+kXkmIg8W/tvZZLn2EmOn0/sMd0s7v338vUTFFcmJVEeMUAAEJHFAL4BYFHMoZ8DcFBV1wK4RUTe0faTSxERuRlATlWvA3CFiFxpOfR9AB5X1XW1/w4nd5ad4/L51PEZdiXH99+T10+QY5nU9vKIAaJqGsAmAG/GHLcOwK7az98H0GsTetbh/Pvfh+qOfyZrAHxERH5Qqy2mde/zVluH+M/H5Zhutg7x779Xr58glzJpHdpcHvVkgBCRrwaar88CuNNlW1NUo3mp9vNJAJe06xzTwPA5fQ5u7/+HAD6kqu8H4AH4cNtPNh1cro+euoYMXN5/r14/s1T1TYcyqe3XUi9GZqjqZxr807cA5AGcBnBh7d9dK/w5ichXUH3/QPX92yoYL6nq2drPowB6pRvFvz4A++fjckw3c3n/vXr91Kvt5VGvXZzNOojzTeJVAF7p3Kl0hOv7/6aIrBKRHIBhAIcSOLc0cPl8eA3Fv/9evX7q1fZriRPlAkTkWVVdV/t5A4CrVPXPAo9fCuC7AL4H4AMA1qjqdCfOtRNE5B8AeA7Afwfw66j2FRcB/Kaqbg0c948BfAuAANitqvd04HQTZ/h8fgPAx0OfzbzP0LF7sys4fkY9ef2Y+GVSp8ojBog6ichSVKP23l66sX217IrrAXxfVd/o9Pmkjcvn0+ufYa+//1Zqd3nEAEFEREYcgyAiIiMGCCIiMmKAICIiIwYIIiIyYoAgagMReUZErq/9/ICI/PtOnxNRvXpyJjVRAu4FcL+IvAvAIICbOnw+RHVjmitRm4jI36C6BMI6Vf17EbkCwD0ALlLVWzp7dkTx2MVE1Aa1PQzeA+Csqv49AKjqT1T1X3T2zIjcMUAQtZiIvAfAYwD+GYAzIrKxw6dE1BAGCKIWEpEBAE8BuFtV/xbAvwWwraMnRdQgjkEQJURE/iGAL6K6DtF/VNUHO3xKRJEYIIiIyIhdTEREZMQAQURERgwQRERkxABBRERGDBBERGTEAEFEREYMEEREZMQAQURERgwQRERk9P8BE7KqG1MxC2oAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Kernel PCA\n",
    "# 将数据映射到更高维的空间\n",
    "from sklearn.datasets import make_circles\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.decomposition import PCA, KernelPCA\n",
    "\n",
    "np.random.seed(0)\n",
    "x, y = make_circles(n_samples=400, factor=0.2, noise=0.02)\n",
    "plt.close('all')\n",
    "plt.figure(1)\n",
    "plt.title('Original Space')\n",
    "plt.scatter(x[:, 0], x[:, 1])\n",
    "plt.xlabel('$x_1$')\n",
    "plt.ylabel('$x_2$')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# rbf kernel\n",
    "kpca = KernelPCA(kernel='rbf', gamma=10)\n",
    "kpca.fit(x)\n",
    "x_kpca = kpca.transform(x)\n",
    "plt.figure(4)\n",
    "plt.title('KernelPCA')\n",
    "plt.scatter(x_kpca[:, 0], x_kpca[:, 1], c=y)\n",
    "plt.xlabel('KPCA_Component 1')\n",
    "plt.ylabel('KPCA_Component 2')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.datasets import make_moons\n",
    "x, y = make_moons(100)\n",
    "plt.figure(5)\n",
    "plt.title('Non Linear Data')\n",
    "plt.scatter(x[:, 0], x[:, 1], c=y)\n",
    "plt.xlabel('$x_1$')\n",
    "plt.ylabel('$x_2$')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# rbf kernel \n",
    "kpca = KernelPCA(kernel='rbf', gamma=10)\n",
    "kpca.fit(x)\n",
    "x_kpca = kpca.transform(x)\n",
    "plt.figure(6)\n",
    "plt.scatter(x_kpca[:, 0], x_kpca[:, 1], c=y)\n",
    "plt.xlabel('$x_kpca_component 1$')\n",
    "plt.ylabel('$x_kpca_component 2$')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.01696103,  0.01741393,  0.00321372,  0.01353169],\n",
       "       [-0.1537381 ,  0.15749994,  0.06356177,  0.04024592],\n",
       "       [ 0.00411871, -0.0043184 ,  0.00821697, -0.02481985],\n",
       "       [ 0.0422117 , -0.04303303, -0.03867019,  0.03973218],\n",
       "       [ 0.07175511, -0.07344514, -0.03626155, -0.00300009]])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# PCA 用于压缩\n",
    "# 重构后（先压缩再解压）的数据与原始数据间的均方距离，称为重构误差\n",
    "pca = PCA(n_components=2)\n",
    "x_reduced = pca.fit_transform(x)  # 降维后的数据，损失部分信息\n",
    "x_recovered = pca.inverse_transform(x_reduced)  # 降维后的数据再还原为原始数据结构\n",
    "(x_recovered - x)[:5]  # 压缩后及前的数据偏差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Incremental PCA\n",
    "# 将数据拆分成小批次，然后一批一批输入到模型\n",
    "from sklearn.decomposition import IncrementalPCA\n",
    "n_batches = 100\n",
    "inc_pca = IncrementalPCA(n_components=4)\n",
    "for x_batch in np.array_split(x, n_batches):\n",
    "    inc_pca.partial_fit(x_batch)  # 此时要 partial_fit()方法\n",
    "x_reduced = inc_pca.transform(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 配合 Numpy 的 memmap 类，每次只加载需要的批次数据到内存\n",
    "x_mm = np.memmap(filename, dtype=\"float32\", mode='readonly', shape=(m, n))\n",
    "batch_size = m // n_batches\n",
    "inc_pca = IncrementalPCA(n_components=154, batch_size=batch_size)\n",
    "inc_pca.fit(x_mm)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 奇异值分解`(SVD)`\n",
    "$$X=U*Σ*V^T$$\n",
    "$U$ 为所有主成分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Singular Value Decomposition\n",
    "from sklearn.datasets import load_iris\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.preprocessing import scale\n",
    "from scipy.linalg import svd\n",
    "\n",
    "data = load_iris()\n",
    "x = data['data']\n",
    "y = data['target']\n",
    "\n",
    "x_s = scale(x, with_mean=True, with_std=False, axis=0)\n",
    "U, S, V = svd(x_s, full_matrices=False)\n",
    "\n",
    "# U 即为 x_t 的近似\n",
    "x_t = U[:, :2]\n",
    "plt.figure(7)\n",
    "plt.scatter(x_t[:, 0], x_t[:, 1], c=y)\n",
    "plt.title('SVD')\n",
    "plt.xlabel('Component 1')\n",
    "plt.ylabel('Component 2')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# LLE\n",
    "- `Locally Linear Embedding: nonlinear dimensionality reduction (NLDR) technique`\n",
    "    - 对每个训练实例 $x^{i}$，查找 $k$ 个最近邻\n",
    "    - 重构该实例 $x^{i}$ 为其最近邻的线性组合，计算权重$w_{i,j}$ 使得均方距离最小化\n",
    "    $$W=argmin\\sum_{i=1}^m||x^{(i)}-\\sum_{j=1}^kw_{i,j}x^{(j)}||^2$$\n",
    "$$subject\\ to\\ \\sum_{j=1}^kw_{i,j}=1$$\n",
    "    - $z_{(i)}$ 是 $x_{(i)}$ 在 $d$ 维空间的投影，求出该向量，并保存与其最近邻的相关关系\n",
    "    $$W=argmin\\sum_{i=1}^m||z^{(i)}-\\sum_{j=1}^kw_{i,j}z^{(j)}||^2$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.manifold import LocallyLinearEmbedding\n",
    "lle = LocallyLinearEmbedding(n_components=2, n_neighbors=10)\n",
    "x_reduced = lle.fit_transform(x)\n",
    "x_reduced[:4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 其它降维方法\n",
    "- `Multidimensional Scaling (MDS)`，降维的同时保存实例间的距离\n",
    "        \n",
    "         \n",
    "- `Isomap`，将实例与其最近邻连接成图，降维的同时保存实例间的地理距离\n",
    "        \n",
    "         \n",
    "- `t-Distributed Stochastic Neighbor Embedding (t-SNE)`，降维的同时，使相似数据靠近，不显示数据原理。主要用于可视化，特别是可视化高维数据的 `cluster`\n",
    "         \n",
    "          \n",
    "- `Linear Discriminant Analysis (LDA) `，其实为分类算法，但在训练时会学习类之间最优识别力的轴，这些轴可以用来定义超平面来映射数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": true
  },
  "varInspector": {
   "cols": {
    "lenName": 16,
    "lenType": 16,
    "lenVar": 40
   },
   "kernels_config": {
    "python": {
     "delete_cmd_postfix": "",
     "delete_cmd_prefix": "del ",
     "library": "var_list.py",
     "varRefreshCmd": "print(var_dic_list())"
    },
    "r": {
     "delete_cmd_postfix": ") ",
     "delete_cmd_prefix": "rm(",
     "library": "var_list.r",
     "varRefreshCmd": "cat(var_dic_list()) "
    }
   },
   "types_to_exclude": [
    "module",
    "function",
    "builtin_function_or_method",
    "instance",
    "_Feature"
   ],
   "window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
